// import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr*;
// import com.alibaba.druid.sql.ast.statement.SQLAssignItem*;
#pragma once
#include <list>
#include "SQLObjectImpl.h"

class SQLExpr;
class SQLAssignItem;
class SQLSubPartition;
class SQLIntegerExpr;

class SQLSubPartitionBy
    : virtual public SQLObjectImpl
{
public:
  SQLExpr_ptr subPartitionsCount;
  BOOL_ptr linear;
  SQLAssignItem_list_ptr options;
  SQLSubPartition_list_ptr subPartitionTemplate;

  SQLIntegerExpr *lifecycle;

  SQLSubPartitionBy();
  SHAREDOBJECT(SQLSubPartitionBy);
  SQLExpr_ptr getSubPartitionsCount();

  void setSubPartitionsCount(SQLExpr_ptr x);

  BOOL_ptr isLinear();

  void setLinear(BOOL_ptr linear);

  SQLAssignItem_list_ptr getOptions();

  SQLSubPartition_list_ptr getSubPartitionTemplate();

  void cloneTo(SQLSubPartitionBy_ptr x);

  SQLIntegerExpr *getLifecycle();

  void setLifecycle(SQLIntegerExpr *lifecycle);

  BOOL_ptr isPartitionByColumn(long columnNameHashCode64);

  virtual SQLObject_ptr clone(){};
};
